package cn.darkhorse.common.util;

import cn.hutool.core.date.LocalDateTimeUtil;
import com.ruoyi.common.utils.DateUtils;

import java.time.Duration;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.time.ZoneId;
import java.util.Date;

/**
 * 时间工具类
 */
public class DateUtilOther extends org.apache.commons.lang3.time.DateUtils{

    /**
     * 日期型字符串转化为日期 格式
     */
    public static LocalDate parseLocalDate(Object str)
    {
        if (str == null||"".equals(str))
        {
            return null;
        }
        try {
            return parseDate(str.toString()).toInstant().atZone(ZoneId.systemDefault()).toLocalDate();
        }catch(Exception e){
            return null;
        }
    }
    /**
     * 日期型字符串转化为日期 格式
     */
    public static LocalDateTime parseLocalDatetime(Object str)
    {
        if (str == null||"".equals(str))
        {
            return null;
        }
        try {
            return DateUtils.parseDate(str.toString()).toInstant().atZone(ZoneId.systemDefault()).toLocalDateTime();
        }catch(Exception e){
            return null;
        }
    }

    /**
     * 日期型字符串转化为日期 格式
     */
    public static LocalDateTime parseLocalDatetime(Date date)
    {
        if (date == null||"".equals(date))
        {
            return null;
        }
        try {
            return date.toInstant().atZone(ZoneId.systemDefault()).toLocalDateTime();
        }catch(Exception e){
            return null;
        }
    }
    /**
     * 日期间毫秒
     * @param beginTime
     * @param endTime
     * @return
     */
    public static long toMinus(LocalDateTime beginTime,LocalDateTime endTime){
        Duration between = LocalDateTimeUtil.between(beginTime,endTime );
        return  between.toMillis();
    }
}
